/******************************************************************************* * Copyright (c) 2012 VMWare, Inc. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * VMWare, Inc. - initial API and implementation *******************************************************************************/ package org.grails.ide.eclipse.test.inferencing; import junit.framework.Test; /** * @author Andrew Eisenberg * @author Nieraj Singh * @since 2.9.0 */ public class ControllerReturnTypeInferencingTests extends AbstractGrailsInferencingTests { public static Test suite() { return buildTestSuite(ControllerReturnTypeInferencingTests.class); } public ControllerReturnTypeInferencingTests(String name) { super(name); } public void testReturnType1() throws Exception { createControllerClass("FlarController", "class FlarController {\n" + " def list = { [first : [''], second : 9 ] }\n" + "}"); String contents = "new FlarController().list().first\n" + "new FlarController().list().second"; int start = contents.indexOf("first"); int end = start + "first".length(); assertTypeInDomainClass(contents, start, end, "java.util.List<java.lang.String>"); start = contents.indexOf("second"); end = start + "second".length(); assertTypeInDomainClass(contents, start, end, "java.lang.Integer"); start = contents.indexOf("list"); end = start + "list".length(); assertTypeInDomainClass(contents, start, end, "java.util.Map"); } public void testReturnType2() throws Exception { createControllerClass("FlarController", "class FlarController {\n" + " def list() { [first : [''], second : 9 ] }\n" + "}"); String contents = "new FlarController().list().first\n" + "new FlarController().list().second"; int start = contents.indexOf("first"); int end = start + "first".length(); assertTypeInDomainClass(contents, start, end, "java.util.List<java.lang.String>"); start = contents.indexOf("second"); end = start + "second".length(); assertTypeInDomainClass(contents, start, end, "java.lang.Integer"); start = contents.indexOf("list"); end = start + "list".length(); assertTypeInDomainClass(contents, start, end, "java.util.Map"); } public void testReturnType3() throws Exception { createControllerClass("FlarController", "class FlarController {\n" + " def list() { [first : [9:''], second : ['':9] ] }\n" + "}"); String contents = "def x = new FlarController().list()\n" + "x.first\n" + "x.second"; int start = contents.indexOf("first"); int end = start + "first".length(); assertTypeInDomainClass(contents, start, end, "java.util.Map<java.lang.Integer,java.lang.String>"); start = contents.indexOf("second"); end = start + "second".length(); assertTypeInDomainClass(contents, start, end, "java.util.Map<java.lang.String,java.lang.Integer>"); start = contents.lastIndexOf("x"); end = start + "x".length(); assertTypeInDomainClass(contents, start, end, "java.util.Map"); } // STS-2780 public void testReturnType4() throws Exception { createControllerClass("FlarController", "class FlarController {\n" + " def list(int a) { [first : [9:''], second : ['':9] ] }\n" + "}"); String contents = "def x = new FlarController().list()\n" + "x.first\n" + "x.second"; int start = contents.indexOf("first"); int end = start + "first".length(); assertTypeInDomainClass(contents, start, end, "java.util.Map<java.lang.Integer,java.lang.String>"); start = contents.indexOf("second"); end = start + "second".length(); assertTypeInDomainClass(contents, start, end, "java.util.Map<java.lang.String,java.lang.Integer>"); start = contents.lastIndexOf("x"); end = start + "x".length(); assertTypeInDomainClass(contents, start, end, "java.util.Map"); } }